<?php

/*
 * Concurso DAL.
 * @Autor: Inicial.cl.
 */

class ConcursoDAL {

    //METODO PARA GRABAR CONCURSO.
    public static function grabar($oConcurso) {
        try {
            $arr = array(
                "{#FECHA}" => $oConcurso->getFecha(),
                "{#TITULO}" => $oConcurso->getTitulo(),
                "{#MENSAJE}" => $oConcurso->getMensaje(),
                "{#SRC}" => $oConcurso->getSrc(),
                "{#IDUSUARIO}" => $oConcurso->getIdUsuario(),
                "{#IDESTADO}" => $oConcurso->getIdEstado()
            );
            $query = Util::getQuery($arr, ConcursoSQL::$GRABAR_CONCURSO);
            $arrDatos = Bd::exec($query);

            $id = Bd::$IDENTITY; //Retorno id insertado
            return $id;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA EDITAR CONCURSO.
    public static function editar($oConcurso) {
        try {
            $arr = array(
                "{#ID}" => $oConcurso->getId(),
                "{#FECHA}" => $oConcurso->getFecha(),
                "{#TITULO}" => $oConcurso->getTitulo(),
                "{#MENSAJE}" => $oConcurso->getMensaje(),
                "{#SRC}" => $oConcurso->getSrc(),
                "{#IDUSUARIO}" => $oConcurso->getIdUsuario(),
                "{#IDESTADO}" => $oConcurso->getIdEstado()
            );
            $query = Util::getQuery($arr, ConcursoSQL::$EDITAR_CONCURSO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR CONCURSO.
    public static function listar($oConcurso) {
        try {
            $arr = array();
            $query = Util::getQuery($arr, ConcursoSQL::$LISTAR_CONCURSO);
            $arrDatos = Bd::exec($query);
            $arrConcurso = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oConcurso = new Concurso();

                    $oConcurso->setId($row["id"]);
                    $oConcurso->setMensaje($row["mensaje"]);
                    $oConcurso->setFecha($row["fecha"]);
                    $oConcurso->setIdUsuario($row["idUsuario"]);
                    $oConcurso->setTitulo($row["titulo"]);
                    $oConcurso->setSrc($row["src"]);
                    $oConcurso->setUsuario($row["usuario"]);
                    $oConcurso->setIdEstado($row["idEstado"]);
                    $oConcurso->setEstado($row["estado"]);

                    $arrConcurso[] = $oConcurso;
                }
            }

            return $arrConcurso;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA OBTENER POR ID CONCURSO.
    public static function obtenerPorId($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, ConcursoSQL::$OBTENER_CONCURSO_POR_ID);
            $arrDatos = Bd::exec($query);

            if (count($arrDatos) > 0) {
                $oConcurso = new ConcursoClass();

                foreach ($arrDatos as $row) {
                    $oConcurso->setId($row["id"]);
                    $oConcurso->setMensaje($row["mensaje"]);
                    $oConcurso->setFecha($row["fecha"]);
                    $oConcurso->setIdUsuario($row["idUsuario"]);
                    $oConcurso->setTitulo($row["titulo"]);
                    $oConcurso->setSrc($row["src"]);
                    $oConcurso->setUsuario($row["usuario"]);
                    $oConcurso->setIdEstado($row["idEstado"]);
                    $oConcurso->setEstado($row["estado"]);
                }
                return $oConcurso;
            }
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA ELIMINAR CONCURSO.
    public static function eliminar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, ConcursoSQL::$ELIMINAR_CONCURSO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR ULTIMOS CONCURSOS.
    public static function listarUltimas() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, ConcursoSQL::$LISTAR_CONCURSO_ULTIMAS);
            $arrDatos = Bd::exec($query);
            $arrConcusos = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oConcurso = new ConcursoClass();

                    $oConcurso->setId($row["id"]);
                    $oConcurso->setMensaje($row["mensaje"]);
                    $oConcurso->setFecha($row["fecha"]);
                    $oConcurso->setIdUsuario($row["idUsuario"]);
                    $oConcurso->setTitulo($row["titulo"]);
                    $oConcurso->setSrc($row["src"]);
                    $oConcurso->setUsuario($row["usuario"]);
                    $oConcurso->setCantidadComentario($row["cantidadComentario"]);

                    $arrConcusos[] = $oConcurso;
                }
            }

            return $arrConcusos;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR CONCURSOS PAGINADAS
    public static function listarUltimasPaginacion($inicio, $tamannoPagina) {
        try {
            $arr = array(
                "{#INICIO}" => $inicio,
                "{#TAMANNOPAGINA}" => $tamannoPagina
            );
            $query = Util::getQuery($arr, ConcursoSQL::$LISTAR_ULTIMAS_PAGINACION);
            $arrDatos = Bd::exec($query);
            $arrConcursos = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oConcurso = new ConcursoClass();

                    $oConcurso->setId($row["id"]);
                    $oConcurso->setMensaje($row["mensaje"]);
                    $oConcurso->setFecha($row["fecha"]);
                    $oConcurso->setIdUsuario($row["idUsuario"]);
                    $oConcurso->setTitulo($row["titulo"]);
                    $oConcurso->setSrc($row["src"]);
                    $oConcurso->setCantidadComentario($row["cantidadComentario"]);

                    $arrConcursos[] = $oConcurso;
                }
            }

            return $arrConcursos;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA GRABAR IMAGEN
    public static function grabarImagen($oConcurso) {
        try {
            $arr = array(
                "{#ID}" => $oConcurso->getId(),
                "{#SRC}" => $oConcurso->getSrc()
            );
            $query = Util::getQuery($arr, ConcursoSQL::$GRABAR_IMAGEN);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA ELIMINAR IMAGEN
    public static function eliminarImagen($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, ConcursoSQL::$ELIMINAR_IMAGEN);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

}

?>